package com.ohxwj.modules.web.service.impl;

import com.ohxwj.modules.web.dao.WebArticleDao;
import com.ohxwj.modules.web.dao.WebLabelDao;
import com.ohxwj.modules.web.entity.WebArticleEntity;
import com.ohxwj.modules.web.entity.WebLabelEntity;
import com.ohxwj.modules.web.service.WebArticleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by Administrator on 2018-04-17.
 */
@Service("webArticleService")
public class WebArticleServiceImpl implements WebArticleService {

    @Autowired
    private WebArticleDao webArticleDao;
    @Override
    public void insertWebArticle(WebArticleEntity webArticleEntity) {
        webArticleDao.insertArticle(webArticleEntity);
        webArticleDao.insertMenuArticle(webArticleEntity.getMenuId(), webArticleEntity.getId(), webArticleEntity.getLabelId());
    }

    @Override
    public List<WebArticleEntity> queryArticles(Map<String, Object> params) {
        List<WebArticleEntity> webArticleEntities = webArticleDao.queryList(params);
        if (null != webArticleEntities && webArticleEntities.size() > 0) {
            for (int i = 0; i < webArticleEntities.size(); i++ ) {
                WebArticleEntity webArticleEntity = webArticleEntities.get(i);
                webArticleEntity = addLabel(webArticleEntity);
                webArticleEntity.setContent(webArticleEntity.getContent().replaceAll("<[^>]*>",""));
                if (webArticleEntity.getContent().length() > 200) {
                    webArticleEntity.setContent(webArticleEntity.getContent().substring(0, 199));
                }
                webArticleEntities.set(i, webArticleEntity);
            }
        }
        return webArticleEntities;
    }

    @Override
    public int queryTotal(Map<String, Object> params) {
        return webArticleDao.queryTotal(params);
    }

    @Override
    public int updateWebArticle(WebArticleEntity webBannerEntity) {
        return webArticleDao.update(webBannerEntity);
    }

    @Override
    public int deleteWebArticle(int id) {
        return webArticleDao.delete(id);
    }

    @Override
    public int updateWebArticleStatus(int id, int status) {
        return webArticleDao.updateStatus(id, status);
    }

    @Override
    public WebArticleEntity loadArticleById(int id) {
        WebArticleEntity webArticleEntity = webArticleDao.queryObject(id);
        if (null != webArticleEntity) {
            return addLabel(webArticleEntity);
        }
        return webArticleEntity;
    }

    @Override
    public WebArticleEntity loadNextArticle(int next, int articleId, int menuId) {
        Map<String, Object> map = new HashMap<>();
        map.put("next", next);
        map.put("articleId", articleId);
        map.put("menuId", menuId);
        return webArticleDao.loadNextArticle(map);
    }

    @Override
    public int updateWebArticleHit(int id) {
        return webArticleDao.updateHit(id);
    }

    @Override
    public List<WebArticleEntity> searchArticles(Map<String, Object> params) {
        return webArticleDao.searchArticles(params);
    }

    @Override
    public int searchTotal(Map<String, Object> params) {
        return webArticleDao.searchTotal(params);
    }

    @Override
    public void insertWebMenuArticle(int menuId, int articleId, int labelId) {
        webArticleDao.insertMenuArticle(menuId, articleId, labelId);
    }

    @Override
    public List<WebArticleEntity> queryArticleByLabelId(int labelId) {
        return webArticleDao.queryArticleByLabelId(labelId);
    }

    @Override
    public List<WebArticleEntity> queryTeachers(Map<String, Object> params) {
        List<WebArticleEntity> webArticleEntities = webArticleDao.queryTeachers(params);
        if (null != webArticleEntities && webArticleEntities.size() > 0) {
            for (int i = 0; i < webArticleEntities.size(); i++ ) {
                WebArticleEntity webArticleEntity = webArticleEntities.get(i);
                webArticleEntity = addLabel(webArticleEntity);
                webArticleEntity.setContent(webArticleEntity.getContent().replaceAll("<[^>]*>",""));
                if (webArticleEntity.getContent().length() > 200) {
                    webArticleEntity.setContent(webArticleEntity.getContent().substring(0, 199));
                }
                webArticleEntities.set(i, webArticleEntity);
            }
        }
        return webArticleEntities;
    }

    @Override
    public int queryTeacherCount(Map<String, Object> params) {
        return webArticleDao.queryTeachersCount(params);
    }

    @Override
    public int updateArticleLabel(int articleId, int labelId) {
        return webArticleDao.updateArticleLabel(articleId, labelId);
    }

    @Autowired
    private WebLabelDao webLabelDao;

    private WebArticleEntity addLabel(WebArticleEntity webArticleEntity) {
        WebLabelEntity webLabelEntity = webLabelDao.queryObject(webArticleEntity.getLabelId());
        if (null != webLabelEntity) {
            webArticleEntity.setLabelName(webLabelEntity.getLabelName());
        }

        return webArticleEntity;
    }
}
